package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.RoomBean;
import com.project.bean.StudentBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IRoomMapper {
    /**
     * 根据表单信息进行动态条件分页查询房间信息，同时统计每个房间已住人数
     * @param address 房间地址
     * @param roomState 房间状态
     * @param roomCanNum 可住人数
     * @param roomGender 房间类型
     * @return 房间分页对象
     */
    public List<RoomBean> cutByItem(@Param("address") String address,
                                           @Param("roomState") String roomState,
                                           @Param("roomCanNum") String roomCanNum,
                                           @Param("roomGender") String roomGender);

    /**
     * 按性别查询可住房间（可住人数>已住人数）
     * @param stuGender 学生性别
     * @return 房间类型的集合
     */
    public List<RoomBean> roomByGender(String stuGender);

    /**
     * 根据房间信息进行添加房间
     * @param room 房间对象
     */
    public void add(RoomBean room);

    /**
     * 根据房间id进行删除房间
     * 1、统计房间的已住人数
     * 2、如果已住人数为0,则先删除该房间的设施记录，再删除房间，返回true
     * 3、如果已住人数不为0,则返回false
     * @param roomId 房间id
     * @return 返回删除是否成功
     */
    public boolean del(Integer roomId);

    /**
     * 根据房间id统计房间已住人数
     * @param roomId 房间id
     */
    public Integer findByRoomId(Integer roomId);

    /**
     *根据房间id查询房间所有信息，
     * 1、同时统计房间的已住人数，
     * 2、并且查询房间所住的学生信息
     * 3、并且查询学生所在的班级名称
     * @param roomId 房间id
     * @return 房间对象
     */
    public RoomBean findById(Integer roomId);

    /**
     * 根据房间id修改房间状态为正常
     * @param roomId 房间id
     */
    public void updateRoomState(Integer roomId);
}
